<?php
class UserModelClass extends AdateModelClass{
	// 	const UserDbUser = 'pts80_02';	//数据库用户名 产品操作用户
	// 	const UserDbPassword = 'pts80com80808';	//数据库密码
	
	const UserDbUser = 'root';	//数据库用户名 会员操作用户
	const UserDbPassword = '';	//数据库密码
	
	const DBTable = 'erp_user';	//数据表名
	
	protected $autoFilter = TRUE;//开启自动过滤
	protected $autoValid = TRUE;//开启自动效验
	
	//protected $_field = array('name','email','tel','password','level','addtime','updatetime');//需要数据的数组
	protected $_field_del = array('submit','reset');	//不需要数据的数组
	//验证规则
	protected $_valid = array(
			array('name',0,'必须有用户名','require'),
			array('name',0,'用户名长度只能4到16之间','length','4,16'),
			array('email',0,'email非法','email'),
			array('tel',0,'手机号码无效','regex','/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/'),
			array('password',0,'密码不能为空','require'),
			array('password',0,'密码不能为空','regex','/^[\d|\w]{5,18}/')
	);
	
	/**
	 * 构造函数
	 * 链接数据库
	 * @access public
	 * @return object
	 */
	public function __construct(){
		$this->link = $this->getConnect(self::UserDbUser,self::UserDbPassword);
	}
	
	
	/**
	 * 添加会员信息
	 * @param array array //一维/二维，键值对数组数据
	 * @return integer id || array ids //返回插入的数据id
	 */
	public function add($array){
		foreach($array as $key=>$val){
			if(is_array($val)){//二维数组
				$array[$key]['addtime'] = time();
			}else{//一维数组
				$array['addtime'] = time();
				break;
			}
		}
		$add_id = $this->insert($array, self::DBTable, $this->link);//自动效验
		if($add_id){
			return $add_id;
		}else{
			if(self::Tracy){
				throw new Exception($this->dbError);
			}else{
				return 0;
			}
		}
	}
	
	/**
	 * 修改会员信息
	 * @param array array //一维，键值对数组数据
	 * @param integer id //产品id
	 * @return integer //成功返回1，失败返回0
	 */
	public function updateUser($array,$id){
		$where = '1 and id = '.$id;
		$array['updatetime'] = time();
		$res = $this->validator($array)->update($array, self::DBTable, $where,$this->link);//手动效验
		if($res){
			return $res;
		}else{
			if(self::Tracy){
				throw new Exception($this->dbError);
			}else{
				return 0;
			}
				
		}
	}
	
	/**
	 * 修改会员状态
	 * @param integer status //状态值(0:1)
	 * @param string type //状态类型 (level会员级别，del 删除，audit 审核)
	 * @param integer id //产品id
	 * @return integer 成功返回1，失败返回0
	 */
	public function updateStatus($status,$type,$id){
		switch ($type) {
			case 'level':
				$array = array('level'=>$status);
				break;
			case 'del':
				$array = array('del'=>$status);
				break;
			case 'audit':
				$array = array('audit'=>$status);
				break;
		}
		$array['updatetime'] = time();
		return $this->updateUser($array, $id);
	}
	
	
	/**
	 * 重写单行查询方法
	 * @access public
	 * @param string fields 查询的字段
	 * @param string where 查询条件
	 * @return mixed
	 */
	public function select ($field,$where=''){
		return parent::select($field, self::DBTable, $where, $this->link);
	}
	
	/**
	 * 重写多行查询方法
	 * @access public
	 * @param string fields 查询的字段
	 * @param string where 查询条件
	 * @param string order 排序
	 * @param string limit 限界
	 * @return array
	 */
	public function selectList($field,$where='',$order='',$limit=''){
		return parent::selectList($field,self::DBTable,$where,$order,$limit,$this->link);
	}
	
}